package co.moju.modules.product.service.dto;

import co.moju.serializer.BigDecimalSerializer;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;


/**
 * 商品对象DTO
 *
 * @author ly
 * @date 2020-04-23
 */
@Getter
@Setter
@ToString
public class StoreProductDto
{

    /** 商品id */
    private Long id;


    /** 商品图片 */
    @NotBlank(message = "商品图片必传")
    private String image;

    /** 轮播图 */
    @NotNull(message = "轮播图不为空")
    @JsonProperty("slider_image")
    private List<String> sliderImage;

    /** 商品名称 */
    @NotBlank(message = "商品名称不能为空")
    @JsonProperty("store_name")
    private String storeName;

    /** 商品简介 */
    @JsonProperty("store_info")
    private String storeInfo;

    /** 关键字 */
    @NotBlank(message = "关键字不能为空")
    private String keyword;

    /** 商品条码（一维码） */
    @JsonProperty("bar_code")
    private String barCode;

    /** 分类id */
    @NotNull(message = "分类id不能为空")
    @JsonProperty("cate_id")
    private String cateId;

    /** 商品价格 */
    private Double price;

    /** 市场价 */
    private Double otPrice;
    @ApiModelProperty(value = "毛重")
    @JsonProperty("gross_weight")
    private BigDecimal grossWeight;
    @ApiModelProperty(value = "毛单价")
    @JsonProperty("gross_price")
    private BigDecimal grossPrice;
    @ApiModelProperty(value = "净重")
    @JsonProperty("net_weight")
    private BigDecimal netWeight;
    @ApiModelProperty(value = "净单价")
    @JsonProperty("net_price")
    private BigDecimal netPrice;
    /** 等级 */
    @ApiModelProperty(value = "等级")
    private String level;
    /** 产地 */
    @ApiModelProperty(value = "产地")
    @JsonProperty("place_of_origin")
    private String placeOfOrigin;
    /** 不良率 */
    @ApiModelProperty(value = "不良率")
    @JsonProperty("defect_rate")
    private String defectRate;
    /** 外包装 */
    @ApiModelProperty(value = "外包装")
    @JsonProperty("outer_packaging")
    private String outerPackaging;
    /** 包装层数 */
    @ApiModelProperty(value = "包装层数")
    @JsonProperty("number_of_packaging_layers")
    private String numberOfPackagingLayers;
    /** 货源 */
    @ApiModelProperty(value = "货源")
    @JsonProperty("source_of_goods")
    private String sourceOfGoods;
    /** 保存条件 */
    @ApiModelProperty(value = "保存条件")
    @JsonProperty("storage_conditions")
    private String storageConditions;
    /** 邮费 */
    private Double postage;

    /** 单位名 */
    @JsonProperty("unit_name")
    private String unitName;

    /** 排序 */
    private Long sort;

    /** 销量 */
    private Long sales;

    /** 库存 */
    private Long stock;

    /** 状态（0：未上架，1：上架） */
    @JsonProperty("is_show")
    private Integer isShow;
    /** 上仓时间 */
    @JsonProperty("up_time")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm:ss")
    private String upTime;
    /** 下仓时间 */
    @JsonProperty("down_time")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm:ss")
    private String downTime;

    /** 是否热卖 */
    @JsonProperty("is_hot")
    private Integer isHot;

    /** 是否优惠 */
    @JsonProperty("is_benefit")
    private Integer isBenefit;

    /** 是否精品 */
    @JsonProperty("is_best")
    private Integer isBest;

    /** 是否新品 */
    @JsonProperty("is_new")
    private Integer isNew;

    /** 商品描述 */
    @NotBlank(message = "商品详情不能为空")
    private String description;


    /** 是否包邮 */
    @JsonProperty("is_postage")
    private Integer isPostage;

    /** 获得积分 */
    @JsonProperty("give_integral")
    private Double giveIntegral;

    /** 成本价 */
    private Double cost;


    /** 是否优品推荐 */
    @JsonProperty("is_good")
    private Integer isGood;

    /** 是否单独分佣 */
    @JsonProperty("is_sub")
    private Integer isSub;

    /** 是否开启啊积分兑换 */
    @JsonProperty("is_integral")
    private Integer isIntegral;

    /** 虚拟销量 */
    private Long ficti;

    /** 运费模板ID */
    @JsonProperty("temp_id")
    private Long tempId;

    /** 规格 0单 1多 */
    @JsonProperty("spec_type")
    private Integer specType;

    //属性项目
    private List<FromatDetailDto> items;

    //sku结果集
    private List<ProductFormatDto> attrs;


}
